package admin_article_api

import (
	"blog_go/models"
	"blog_go/models/ctype"
	"blog_go/models/res"
	"blog_go/service/common"
	"github.com/gin-gonic/gin"
	"github.com/jinzhu/copier"
	"github.com/sirupsen/logrus"
)

type ArticleListRsp struct {
	ID            uint64      `json:"id"`
	Title         string      `json:"title"`          // 文章标题
	Abstract      string      `json:"abstract"`       // 文章简介
	LookCount     uint        `json:"look_count"`     // 浏览量
	CommentCount  uint        `json:"comment_count"`  // 评论量
	DiggCount     uint        `json:"digg_count"`     // 点赞量
	CollectsCount uint        `json:"collects_count"` // 收藏量
	Category      string      `json:"category"`       // 文章分类
	Source        string      `json:"source"`         // 文章来源
	Link          string      `json:"link"`           // 原文链接
	ImageID       uint        `json:"image_id"`       // 文章封面id
	Tags          ctype.Array `json:"tags"`           // 文章标签
	UserID        uint        `json:"user_id"`        // 用户id
	NickName      string      `json:"nick_name"`      // 发布文章的用户昵称
	ImagePath     string      `json:"image_path"`     // 文章的封面
}

// ArticleList 文章列表
// @Tags 文章管理
// @Summary 文章列表
// @Description 文章列表
// @Param params query models.PageInfo true "入参"
// @Param token header string true "token"
// @Router /api/admin/article/list [get]
// @Produce json
// @Success 200 {object} res.Response{data=res.ListResponse[[]ArticleListRsp]}
func (AdminArticleApi) ArticleList(c *gin.Context) {
	page := models.DefaultPageInfo()
	list, count, err := common.ComList(models.ArticleModel{}, page)
	if err != nil {
		logrus.Error(err)
		panic(err)
	}
	var articleListResponseList []ArticleListRsp
	for _, model := range list {
		var articleListResponse ArticleListRsp
		err := copier.Copy(&articleListResponse, &model)
		if err != nil {
			logrus.Error(err)
			panic(err)
		}
		articleListResponseList = append(articleListResponseList, articleListResponse)
	}
	res.OkWithList(articleListResponseList, count, c)
}
